AWS CLIを利用し、Amazon S3バケットのpre-signed urlsを取得してみました
こんにちは、イムチェジョンです。
今回のブログではS3バケットのオブジェクトを開くためにAWS CLIを利用してpre-signed urlsを取得してみました。
アジェンダ
- pre-signed urlsとは?
- pre-signed urlsの取得方法
- まとめ
1. pre-signed urlsとは?
pre-signed urls
- すべてのオブジェクト及びバケットは基本的にプライベートだが、pre-signed urlsを使用して選択的にオブジェクトを共有できる
- 顧客/ユーザーがAWSセキュリティ資格証明や権限なしに、バケットにオブジェクトをアップロードすることを許容できる
pre-signed urlsの構成
pre-signed urlsは下のように構成されてます。
https://s3.amazonaws.com/examplebucket/test.txt? X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=(your-access-key-id)/(date)/(AWS Region)/(AWS-service)/aws4_request &X-Amz-Date=20130721T201207Z &X-Amz-Expires=86400 &X-Amz-SignedHeaders=host &X-Amz-Signature=(signature-value)
- X-Amz-Algorithm
- AWS Signatureバージョン及び署名の計算に使用されたアルゴリズムを識別します。
- X-Amz-Credential
- アクセスキーID の他にも署名が有効な範囲(AWS エリア及びサービス)を提供
- この値は署名計算で使用する範囲と一致しなければならない
- X-Amz-Date
- 日付及び時間形式はISO8601標準に従う必要があり、形式を指定する必要がある
- "yyyyyMMDTHHmmssZ"形式で表示
- X-Amz-Expires
- 作成したpre-signed urlsが有効な期間(秒)を提供
- 値段は正数で表示
- ex) 86400(24時間)
- 最小値は1
- 最大値は604800(7 日)
- X-Amz-SignedHeaders
- 署名を計算するに使うヘッダーを並ぶ
- X-Amz-Signature
- リクエストを認証するための署名を提供
- この署名はAmazon S3が計算した署名と一致しなければならない
- 一致しないとAmazon S3がリクエストを拒否
- X-Amz-Security-Token(オプション)
- STSサービスから持ち込んだ資格証明を使う場合、資格証明媒介変数
2. pre-signed urlsの取得方法
S3バケットを作成し、ファイルをアップロードするのは省略しました。
S3バケットのファイルをオープン
アップロードされているイメージファイルを開いてみましょう。
ファイル情報ページで開く
をクリックします。
すると、ファイルが開きました。
AWS CLIでpre-signed urlを取得し、オープン
今回はAWS CLIを利用し、ファイルをオープンしてみましょう。
現在、publicの状態ではないので、ファイル情報ページのオブジェクト URLでインターネットで接続していると、表示されません。
ファイル情報ページでS3 URIをコピーします。
AWS CLIを利用し、pre-signed urlを取得してみましょう。
$ aws s3 presign (S3のURL) --region (バケットのリージョン) $ aws s3 presign s3://lim-origin-202108/cat.jpg --region ap-northeast-2 https://lim-origin-202108.s3.ap-northeast-2.amazonaws.com/cat.jpg
結果で出るURLをコピーしてインターネットに接続してみると、写真が表示されているのが確認できます。
3. まとめ
今回はAWS CLIを利用してpre-signed urlsを取得する方法をまとめてみました。